// 法律援助平台项目专用配置
import { ENV_CONFIG, config, DEBUG } from './env'

// 项目基础配置
export const projectConfig = {
  // 应用信息
  app: {
    name: '法律援助平台',
    version: '1.0.0',
    description: '专业的法律援助服务平台',
    copyright: '© 2024 法律援助平台'
  },

  // API配置
  api: {
    baseURL: ENV_CONFIG.API_BASE_URL,
    timeout: config.VITE_REQUEST_TIMEOUT || 15000,
    retryTimes: 3,
    uploadTimeout: 60000 // 文件上传超时时间
  },

  // 案件相关配置
  case: {
    // 案件类型
    types: [
      { value: 'civil', label: '民事案件', color: '#67C23A' },
      { value: 'criminal', label: '刑事案件', color: '#F56C6C' },
      { value: 'administrative', label: '行政案件', color: '#E6A23C' },
      { value: 'commercial', label: '商事案件', color: '#409EFF' },
      { value: 'family', label: '家事案件', color: '#909399' }
    ],

    // 案件状态
    status: {
      draft: { label: '草稿', color: '#909399' },
      submitted: { label: '已提交', color: '#E6A23C' },
      reviewing: { label: '审核中', color: '#409EFF' },
      assigned: { label: '已分配', color: '#67C23A' },
      processing: { label: '处理中', color: '#E6A23C' },
      completed: { label: '已完成', color: '#67C23A' },
      rejected: { label: '已拒绝', color: '#F56C6C' }
    },

    // 优先级
    priority: {
      low: { label: '低', color: '#67C23A' },
      normal: { label: '普通', color: '#E6A23C' },
      high: { label: '高', color: '#F56C6C' },
      urgent: { label: '紧急', color: '#F56C6C' }
    }
  },

  // 律师相关配置
  lawyer: {
    // 专业领域
    specialties: [
      '民事纠纷', '刑事辩护', '行政诉讼', '商事仲裁',
      '知识产权', '劳动纠纷', '婚姻家事', '房地产',
      '金融证券', '国际贸易', '环境保护', '医疗纠纷'
    ],

    // 认证状态
    verificationStatus: {
      pending: { label: '待审核', color: '#E6A23C' },
      approved: { label: '已认证', color: '#67C23A' },
      rejected: { label: '已拒绝', color: '#F56C6C' }
    }
  },

  // 文件上传配置
  upload: {
    // 支持的文件类型
    allowedTypes: [
      'image/jpeg', 'image/png', 'image/gif',
      'application/pdf', 'application/msword',
      'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
      'text/plain'
    ],
    
    // 文件大小限制 (MB)
    maxSize: 10,
    
    // 上传路径
    paths: {
      avatar: '/uploads/avatars',
      caseMaterial: '/uploads/case-materials',
      document: '/uploads/documents'
    }
  },

  // 分页配置
  pagination: {
    defaultPageSize: 10,
    pageSizeOptions: [10, 20, 50, 100]
  },

  // 缓存配置
  cache: {
    // 缓存过期时间 (毫秒)
    expireTime: 5 * 60 * 1000, // 5分钟
    // 最大缓存数量
    maxSize: 100
  },

  // 通知配置
  notification: {
    // 消息类型
    types: {
      system: { icon: 'el-icon-bell', color: '#409EFF' },
      case: { icon: 'el-icon-document', color: '#67C23A' },
      lawyer: { icon: 'el-icon-user', color: '#E6A23C' },
      urgent: { icon: 'el-icon-warning', color: '#F56C6C' }
    }
  }
}

// 开发环境特殊配置
export const devConfig = {
  // 模拟数据开关
  mockData: DEBUG,
  
  // 调试工具
  debug: {
    showApiLogs: DEBUG,
    showPerformance: DEBUG,
    showErrorDetails: DEBUG
  },
  
  // 开发服务器配置
  devServer: {
    port: 3000,
    host: '0.0.0.0',
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        rewrite: path => path.replace(/^\/api/, '')
      }
    }
  }
}

// 生产环境配置
export const prodConfig = {
  // 性能优化
  performance: {
    // 启用压缩
    compression: true,
    // 启用缓存
    caching: true,
    // 启用CDN
    cdn: true
  },
  
  // 安全配置
  security: {
    // HTTPS强制
    httpsOnly: true,
    // CSP策略
    csp: true,
    // XSS防护
    xssProtection: true
  },
  
  // 监控配置
  monitoring: {
    // 错误监控
    errorTracking: true,
    // 性能监控
    performanceTracking: true,
    // 用户行为分析
    analytics: true
  }
}

// 工具函数
export const configUtils = {
  // 获取案件类型标签
  getCaseTypeLabel(value) {
    const type = projectConfig.case.types.find(t => t.value === value)
    return type ? type.label : '未知类型'
  },

  // 获取案件状态标签
  getCaseStatusLabel(value) {
    const status = projectConfig.case.status[value]
    return status ? status.label : '未知状态'
  },

  // 获取案件状态颜色
  getCaseStatusColor(value) {
    const status = projectConfig.case.status[value]
    return status ? status.color : '#909399'
  },

  // 获取优先级标签
  getPriorityLabel(value) {
    const priority = projectConfig.case.priority[value]
    return priority ? priority.label : '普通'
  },

  // 获取优先级颜色
  getPriorityColor(value) {
    const priority = projectConfig.case.priority[value]
    return priority ? priority.color : '#E6A23C'
  },

  // 检查文件类型是否允许
  isFileTypeAllowed(fileType) {
    return projectConfig.upload.allowedTypes.includes(fileType)
  },

  // 检查文件大小是否允许
  isFileSizeAllowed(fileSize) {
    return fileSize <= projectConfig.upload.maxSize * 1024 * 1024
  },

  // 格式化文件大小
  formatFileSize(bytes) {
    if (bytes === 0) return '0 B'
    const k = 1024
    const sizes = ['B', 'KB', 'MB', 'GB']
    const i = Math.floor(Math.log(bytes) / Math.log(k))
    return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
  },

  // 获取上传路径
  getUploadPath(type) {
    return projectConfig.upload.paths[type] || projectConfig.upload.paths.document
  }
}

// 导出默认配置
export default {
  project: projectConfig,
  dev: devConfig,
  prod: prodConfig,
  utils: configUtils
} 